package com.newsee.remote.common.bean;


import com.newsee.remote.common.enumeration.ResponseCode;

/**
 * Json返回
 *
 * @author liangzhichen
 */
public class JsonReturn {
    /**
     * 成功返回
     *
     * @return 成功响应
     */
    public static JsonResult succ() {
        return createResult(ResponseCode.OK, null);
    }

    /**
     * 成功返回
     *
     * @param data
     *            返回数据
     * @return 成功响应
     */
    public static JsonResult succ(Object data) {
        return createResult(ResponseCode.OK, data);
    }

    /**
     * 失败返回
     *
     * @return 失败响应
     */
    public static JsonResult fail() {
        return createResult(ResponseCode.FAIL, null);
    }

    /**
     * 失败返回
     *
     * @param code
     *            响应code
     * @return 失败响应
     */
    public static JsonResult fail(ResponseCode code) {
        return createResult(code, null);
    }

    /**
     * 失败返回
     *
     * @param data
     *            返回数据
     * @return 失败响应
     */
    public static JsonResult fail(Object data) {
        return createResult(ResponseCode.FAIL, data);
    }

    /**
     * 返回
     *
     * @param code
     *            响应code
     * @param data
     *            返回数据
     * @return 失败响应
     */
    public static JsonResult fail(ResponseCode code, Object data) {
        return createResult(code, data);
    }


    /**
     * 返回
     *
     * @param data
     *            返回数据
     * @return 未授权响应
     */
    public static JsonResult toUnauthorized(Object data) {
        return createResult(ResponseCode.UNAUTHORIZED, data);
    }

    /**
     * 返回
     *
     * @param data
     *            返回数据
     * @return 未授权响应
     */
    public static JsonResult redirect(Object data) {
        return createResult(ResponseCode.REDIRECT, data);
    }

    /**
     * 返回
     *
     * @param code
     *            响应code
     * @param data
     *            返回数据
     * @return 响应
     */
    private static JsonResult createResult(ResponseCode code, Object data) {
        JsonResult result = new JsonResult(code);
        if (data != null) {
            result.setData(data);
        }
        return result;
    }
}
